home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagn_r.zip / NETWORK.SWG / 0010_Network "Real" name.pas < prev    next >
Pascal/Delphi Source File  |  1993-08-27  |  2KB  |  85 lines

  1. {
  2. -> I don't have an answer to your question, but would you happen to know
  3. -> how to return a user's full name (as stored in syscon)?  Thanks.
  4.  
  5. I assume you already have the user's login name.  Here is a procedure
  6. that will get a user's full name.  If you are going to do a lot of
  7. Netware programming I suggest you get "Programmers Guide to Netware" by
  8. Charles Rose. ISBN # 0-07-607029-8.  It documents all of the Netware
  9. functions and also talks about IPX/SPX programming.
  10. }
  11.  
  12. Uses
  13.   Dos;
  14.  
  15. Var
  16.   Regs : Registers;
  17.  
  18. Function Full_Name(User_Name : String) : String;
  19. Type
  20.   RequestBuffer = Record
  21.     RequestBufferLength : Word;
  22.     Code                : Byte;
  23.     ObjectType          : Word;
  24.     ObjectNameLength    : Byte;
  25.     ObjectName          : Array[1..48] of char;
  26.     SegmentNumber       : Byte;
  27.     PropertyNameLength  : Byte;
  28.     PropertyName        : Array[1..15] of char;
  29.   end;
  30.  
  31.   ReplyBuffer = Record
  32.     ReplyBufferLength : Word;
  33.     PropertyValue     : Array[1..128] of char;
  34.     MoreSegments      : Byte;
  35.     PropertyFlags     : Byte;
  36.   end;
  37.  
  38. Var
  39.   Request : RequestBuffer;
  40.   Reply   : ReplyBuffer;
  41.   PropertyName : String[15];
  42.   Counter : Byte;
  43.   Temp    : String[128];
  44.  
  45. begin
  46.   PropertyName := 'IDENTIFICATION';
  47.   Request.RequestBufferLength := SizeOf(Request) - 2;
  48.   Request.Code := $3D;
  49.   Request.SegmentNumber := 1;
  50.   Request.ObjectType := $0100;
  51.   Request.ObjectNameLength := SizeOf(Request.ObjectName);
  52.   FillChar(Request.ObjectName, SizeOf(Request.ObjectName), #0);
  53.  
  54.   For Counter := 1 to length(User_Name) do
  55.     Request.ObjectName[Counter] := User_Name[Counter];
  56.  
  57.   Request.PropertyNameLength := SizeOf(Request.PropertyName);
  58.   FillChar(Request.PropertyName, SizeOf(Request.PropertyName), #0);
  59.  
  60.   For Counter := 1 to Length(PropertyName) do
  61.     Request.PropertyName[Counter] := PropertyName[Counter];
  62.  
  63.   Regs.AH := $E3;
  64.   Regs.DS := Seg(Request);
  65.   Regs.SI := Ofs(Request);
  66.  
  67.   Reply.ReplyBufferLength := SizeOf(Reply) - 2;
  68.   Regs.ES := Seg(Reply);
  69.   Regs.DI := Ofs(Reply);
  70.  
  71.   MSDos(Regs);
  72.  
  73.   Temp := '';
  74.   Counter := 1;
  75.   While (Reply.PropertyValue[Counter] <> #0) do
  76.   begin
  77.     Temp := Temp + Reply.PropertyValue[Counter];
  78.     inc(Counter);
  79.   end;
  80.   Full_Name := Temp;
  81. end;
  82.  
  83. begin
  84.   Writeln(Full_Name('SOKALSKY'));
  85. end.